<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
            /* 
      请封装一个函数,可以按照以下调用的方式进行求和
        - add(1,2,3)
        - add(1,2)(3)
        - add(1)(2,3)
        - add(1)(2)(3)
        - add(1,2)(2,2)(3,2)....
    */

    function add(...arg){

        let num = 0;

        num = arg.reduce((a,b) => a+b,0)

        //每传一次次参数，返回当前函数，并且初始值变为上一次的
        const temp = (...arg)=>{
            num = arg.reduce((a,b) => a+b,num)
            return temp
        }
        //当所有参数执行完毕，还是会返回一个函数，初始值为最后的num
        //直接打印会返回一个函数的字符串

        // console.log(temp);
//重写toString方法，在用alert弹出时调用该方法返回数值
      temp.toString = function () {
        return num
      }

      return temp;
    }
    
   alert(add(1, 2)(2, 2)(3, 2)) 
    </script>
</body>
</html>